package Reflect;


import java.lang.reflect.Method;

public class Reflect4 {
    public static void main(String[] args) throws Exception {
        Class personClass = Person.class;
        Method eat_method1 = personClass.getMethod("eat");
        //获取指定名称的方法
        Person p = new Person();
        eat_method1.invoke(p);
        //执行方法,这是空参的方法

        Method eat_method2 = personClass.getMethod("eat", String.class);
        //执行方法,上面除了要指定的方法名称外,还需要指定的参数的类型
        eat_method2.invoke(p, "fish");
        //我只是一个测试用的方法fish

        System.out.println("==========");
        //获取所有的方法
        Method[] methods = personClass.getMethods();
        for (Method method : methods) {
            System.out.println(method);
            method.setAccessible(true);
            System.out.println(method.getName());
            //这个是获取方法名称的方法
            //也可以用setAccessible方法来暴力反射
        }//打印所有方法

        System.out.println(personClass.getName());
        //这个是获取类名
    }
}
